// 颠倒给定的 32 位无符号整数的二进制位。


#include<vector>
#include<string>
#include<set>
#include<bits/stdc++.h>
using namespace std;


// 执行用时：
// 32 ms
// , 在所有 C++ 提交中击败了
// 51.30%
// 的用户
// 内存消耗：
// 6.6 MB
// , 在所有 C++ 提交中击败了
// 5.21%
// 的用户

class Solution {
public:
    uint32_t reverseBits(uint32_t n) {
        string s = "";
        while(n != 0){
            int temp = n%2;
            s = s + to_string(temp);
            n = n/2;
        }
        while (s.size() != 32)
        {
            s = s + to_string(0);
        }
        long long res =0;
        for(int i = 0;i < s.size();i++){
            long temp = pow(2,31-i)*(s[i]-'0');
            cout<<temp<<endl;
            res = temp + res;
        }
        return res;
    }
};

int main(int argc, char const *argv[])
{
    Solution s;
    long res = s.reverseBits(3123121);
    cout<<res<<endl;
    return 0;
}
